package com.truing.flycodebill.workbench.mapper;

import com.truing.flycodebill.workbench.domain.Bill;

import java.util.List;
import java.util.Map;

public interface BillMapper {

    /**
     * 保存创建的账单
     *     接口名：insertBill
     *     返回值：int
     *     形参：Bill bill
     */
    int insertBill(Bill bill);

    /**
     * 根据条件分页查询账单的列表
     *     接口名：selectBillByConditionForPage
     *     返回值：List<Bill>
     *     形参：Map<String,Object> map
     *
     */
    List<Bill> selectBillByConditionForPage(Map<String,Object> map);

    /**
     * 根据条件查询账单的总条数
     * 接口名：selectCountBillByCondition
     *     返回值：int
     *     形参：Map<String,Object> map
     */
    int selectCountBillByCondition(Map<String,Object> map);

    /**
     * 根据ids批量删除账单
     * 接口名：deleteBillByIds
     *     返回值：int
     *     形参：String[] ids
     */
    int deleteBillByIds(String[] ids);

    /**
     * 根据id查询账单的信息
     * 接口名：selectBillById
     *     返回值：Bill
     *     形参：String id
     */
    Bill selectBillById(String id);

    /**
     * 保存修改的账单
     * 接口名：updateBill
     *     返回值：int
     *     形参：Bill bill
     */
    int updateBill(Bill bill);

    /**
     * 查询所有账单
     *     接口名：selectBillsByOwnerId
     *     返回值：List<Bill>
     *     形参：String ownerId
     */
    List<Bill> selectBillsByOwnerId(String ownerId);

    /**
     * 根据id组成的数组查询市场活动
     *    接口名：selectBillByIds
     *    返回值：List<Bill>
     *    形参：String[] ids
     *
     */
    List<Bill> selectBillByIds(String[] ids);

    /**
     * 根据账单时间查询账单
     * @param map
     * @return
     */
    List<Bill> selectBillByBillTime(Map<String,Object> map);

    /**
     *
     * @return
     */
    List<Bill> selectBillByTimeAndType(Map<String,Object> map);

    /**
     * 查询账单总条数
     * @return
     */
    int selectCountOfBills();
    /**
     * 根据账单类型查询账单条数
     * @return
     */
    int selectCountOfBillsByTypeId(String typeId);

    /**
     * 查询前五条账单记录
     * @return
     */
    List<Bill> selectTopFiveBills();

    List<Bill> selectBillByTitle(String title);

    List<Bill> selectBillByTypeId(Map<String,Object> map);
}